Read and write operations to disk and other memory devices are generally efficient when they are sent individually to the disk, that is, all reads are sent separately from the writes. When a mixed workload of reads and writes are sent, however, very poor read performance can occur. This is generally due to the fact that write operations require longer disk service times due to internal operations of remapping, garbage collection, or internal buffer size shortages in the disk for write workloads in the I/O device. This results in higher latencies and lower IOPS (I/O operations per second) for read workloads causing significant delays to applications. This issue is applicable to all types of I/O devices, but is even more prevalent in high speed devices, such as flash memory, solid state disks (SSDs), and so on. As an example, consider that read operations may require 200 to 400 microseconds to complete, while write operations may require on the order of 2 to 5 milliseconds to complete. There is thus about an order of magnitude difference between the IOPS rate between read and write operations. For a series of operations that are consecutive writes (W-W-W- . . . W) or reads (R-R-R- . . . R), the difference in latency has no effect. However, if read operations are interleaved with writes (e.g., W-R-W-W-R-W-R- . . . ), the writes will stall at least some of the reads due to this significant difference in latency.
What is needed, therefore, is a system and method for dynamically balancing reads and writes with a device adaptive method. The solution should be device agnostic and applicable to all devices that require reads and writes to be balanced. What is further needed is a solution that can be extended to mixed client (applications) scenarios where each client sends reads and writes with varied request sizes and different performance expectancy numbers.
The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also be inventions.